using System.Collections.Generic;
using NHibernate;
using ProjetoControlePagamento.CamadaAcessoDados;
using ProjetoControlePagamento.Dados.Entidades;

namespace ProjetoControlePagamento.CamadaAcessoDadosNH
{
    public class RepositorioEmpresa : IRepositorioEmpresa
    {
        public Empresa Inserir(Empresa empresa)
        {
            GerenciadorBD.Instance.SessaoAtual().Save(empresa);
            return empresa;
        }

        public Empresa Atualizar(Empresa empresa)
        {
            Empresa tmpEmpresa = ObterPorId(empresa.EmpresaId);

            tmpEmpresa.Cep = empresa.Cep;
            tmpEmpresa.Cidade = empresa.Cidade;
            tmpEmpresa.DataContrato = empresa.DataContrato;
            tmpEmpresa.Email = empresa.Email;
            tmpEmpresa.Endereco = empresa.Endereco;
            tmpEmpresa.Estado = empresa.Estado; 
            tmpEmpresa.RazaoSocial = empresa.RazaoSocial;
            tmpEmpresa.Telefone = empresa.Telefone;

            GerenciadorBD.Instance.SessaoAtual().Update(tmpEmpresa);
            return tmpEmpresa;
        }

        public void Excluir(Empresa empresa)
        {
            GerenciadorBD.Instance.SessaoAtual().Delete(empresa);
        }

        public IList<Empresa> ObterTodos()
        {
            ICriteria criteria = GerenciadorBD.Instance.SessaoAtual().CreateCriteria(typeof(Empresa));
            return criteria.List<Empresa>() as List<Empresa>;
        }

        public Empresa ObterPorId(int id)
        {
            return GerenciadorBD.Instance.SessaoAtual().Get<Empresa>(id);
        }
    }
}